#ifndef _MYQUEUE_H

#define datatype int
#define MAXSIZE 11
//顺序栈类型说明 
typedef struct seqQueue{
    datatype a[MAXSIZE];//数组 
    int front,rear;//队头队尾数组下标 
    int length;//队列长度 
}SEQQUEUE;

typedef struct node{
    datatype data;//数据域 
    struct node *next;//指针域 
}NODE;

typedef struct linkQueue{
    NODE *front,*rear;//队头队尾结点 
    int length;//队列长度
}LINKQUEUE;

//顺序队列的常用操作 
SEQQUEUE *init_seqqueue();//顺序队列的初始化 ，建立一个空的顺序队列
void push_seqqueue(SEQQUEUE *ss,datatype x); //入队列操作，不成功输出提示语 
datatype pop_seqqueue(SEQQUEUE *ss); //出队列操作，成功返回出栈的元素，不成功输出提示语 
 
int full_seqqueue(SEQQUEUE *ss);//判断队列是否已满，返回0代表不满，非0代表已满 
int empty_seqqueue(SEQQUEUE *ss);//判断队列是否为空，返回0代表不空，非0代表为空 
void print_seqqueue(SEQQUEUE *ss);//输出队列中元素，从队头开始到队尾 


//链式队列的常用操作 
LINKQUEUE *init_linkqueue();//队列的初始化 ，建立一个空的队列
void push_linkqueue(LINKQUEUE *lq,datatype x); //入队列操作，不成功输出提示语 
datatype pop_linkqueue(LINKQUEUE *lq); //出队列操作，成功返回出栈的元素，不成功输出提示语 
 //链式队列不需要判断已满 
//int full_linkqueue(LINKQUEUE *lq);//判断队列是否已满，返回0代表不满，非0代表已满 
int empty_linkqueue(LINKQUEUE *lq);//判断队列是否为空，返回0代表不空，非0代表为空 
void print_linkqueue(LINKQUEUE *lq);//输出队列中元素，从队头开始到队尾 

#endif